<?php
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of Usuario_model
 *
 * @author Julio Arredondo
 */
class Usuario_model extends CI_Model {
    //put your code here
    //cambiar a private
    var $id_usuario;
    var $nombre;
    var $apellido;
    var $email;
    var $password;

    public function insert(){
        $this->set_from_post();
        $resp = $this->db->insert("usuarios", $this);
        if(!$resp){
            throw new Exception("No se pudo insertar el usuario");
        }
        return $this->db->insert_id();
    }

    public function update(){
        $this->set_from_post();
        $where = array("id_usuario" => $this->id_usuario);
        $this->db->where($where);
        $resp = $this->db->update("usuarios", $this);
        if(!$resp){
            throw new Exception("No se pudo actualizar el usuario");
        }
        return $this->id_usuario;
    }


    public function set_password($id_usuario, $password){
        $data = array("password" => $password);
        $where = array("id_usuario" => $id_usuario);
        $this->db->where($where);
        $resp = $this->db->update("usuarios", $data);
        if(!$resp){
            throw new Exception("No se pudo establecer el password");
        }
        return $this->id_usuario;
    }

    public function delete($id){ //TODO: hacer validaciones para inactivar
        $where = array("id_usuario" => $id);
        $data = array("activo" => 0); //se desactiva el campo activo
        $this->db->where($where);
        $resp = $this->db->update("usuarios", $data);
        if(!$resp){
            throw new Exception("No se pudo desactivar el usuario");
        }
        return $resp;
    }
    public function exist_mail($email){
        $where = array("email" => $email);
        $query = $this->db->get_where("usuarios", $where);
        return($query->num_rows() > 0)?true:false;
    }

    public function has_password($email){
        $where = array("email" => $email, "password" => null);
        $query = $this->db->get_where("usuarios", $where);
        return($query->num_rows() < 1)?true:false;
    }

    public function confirm_password($email, $password){
        $where = array();
        $where['email'] = $email;
        $where['password'] = $password;
        $query = $this->db->get_where("usuarios", $where);
        $ret = ($query->num_rows() > 0)?true:false;
        if(!$ret){
            //todo: deducir la causa del error
            throw new Exception("No coinciden datos");
        }
        $tmp = $query->first_row('array');
        return $tmp['id_usuario'];
       
    }

    public function confirm_password_by_id($id_usuario, $password){
        $where = array();
        $where['id_usuario'] = $id_usuario;
        $where['password'] = $password;
        $query = $this->db->get_where("usuarios", $where);
        $ret = ($query->num_rows() > 0)?true:false;
        if(!$ret){
            //todo: deducir la causa del error
            throw new Exception("No coinciden datos");
        }
        $tmp = $query->first_row('array');
        return $tmp['id_usuario'];

    }

    public function get($id){
        $where = array("id_usuario" => $id);
        $query = $this->db->get_where("usuarios", $where);
        $resultado = $query->result_array();
        return current($resultado);
    }
    private function set_from_post(){
        $tmp_id = $this->input->post("id_usuario");
        if(!empty($tmp_id)){
            $this->id_usuario = $tmp_id;
        }
        $this->nombre = $this->input->post("nombre");
        $this->email = $this->input->post("email");
        $this->apellido = $this->input->post("apellido");
    }

    public function getAll($activos = true){
        //$where = array("id_usuario" => $id);
        if($activos){
            $this->db->where(array("activo" => 1));
        }
        $query = $this->db->get("usuarios");
        return $query->result_array();
    }

}
?>
